package com.example.bookkeepingelf.business.database.entity;

import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 账单流水项实体类
 */
@Entity(tableName = "bill_flow_item")
public class BillFlowItem {

    /**
     * 主键，自动生成
     */
    @PrimaryKey(autoGenerate = true)
    private Integer id;

    /**
     * 账本ID
     */
    @ColumnInfo(name = "account_book_id")
    private String accountBookId;

    /**
     * 账单日期
     */
    @ColumnInfo(name = "create_date")
    private Date createDate;

    /**
     * 星期（使用整数表示，例如1表示星期一）
     * 枚举：WeekEnum
     */
    @ColumnInfo(name = "week")
    private Integer week;

    /**
     * 星期的汉字表示（例如“星期一”）
     * 枚举：WeekEnum
     */
    @ColumnInfo(name = "week_str")
    private String weekStr;

    /**
     * 收入金额
     */
    @ColumnInfo(name = "operate_amount")
    private BigDecimal operateAmount;

    /**
     * 支出类型（例如“收入”或“支出”）
     */
    @ColumnInfo(name = "operate_type")
    private String operateType;

    /**
     * 备注
     */
    @ColumnInfo(name = "remarks")
    private String remarks;

    /**
     * 流水图标
     */
    @ColumnInfo(name = "icon")
    private String icon;

    /**
     * 流水图片类型
     */
    @ColumnInfo(name = "icon_type")
    private String iconType;

    // Getters and Setters

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getAccountBookId() {
        return accountBookId;
    }

    public void setAccountBookId(String accountBookId) {
        this.accountBookId = accountBookId;
    }

    public Date getCreateDate() {
        return createDate;
    }

    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }

    public Integer getWeek() {
        return week;
    }

    public void setWeek(Integer week) {
        this.week = week;
    }

    public String getWeekStr() {
        return weekStr;
    }

    public void setWeekStr(String weekStr) {
        this.weekStr = weekStr;
    }

    public BigDecimal getOperateAmount() {
        return operateAmount;
    }

    public void setOperateAmount(BigDecimal operateAmount) {
        this.operateAmount = operateAmount;
    }

    public String getOperateType() {
        return operateType;
    }

    public void setOperateType(String operateType) {
        this.operateType = operateType;
    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public String getIconType() {
        return iconType;
    }

    public void setIconType(String iconType) {
        this.iconType = iconType;
    }
}
